/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.urbainski.estagio.entidade;

import java.io.Serializable;
import java.util.Date;
import java.util.List;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.persistence.Transient;

/**
 *
 * @author Cristian Elder Urbainski
 * @since 11/12/2011
 */

@Entity
@Table(name = "aluno")
public class Aluno implements Serializable {
   
    private static final long serialVersionUID = 1L;
    
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "id_aluno")
    private Integer idAluno;
   
    @Column(name = "id_endereco")
    private Integer idEndereco;
    
    @Column(name = "id_turma")
    private Integer idTurma;
    
    @Column(name = "id_curso")
    private Integer idCurso;
    
    @Column(name = "nm_aluno")
    private String nmAluno;
   
    @Column(name = "ds_email")
    private String dsEmail;
   
    @Column(name = "ds_telefone")
    private String dsTelefone;
    
    @Column(name = "nr_rg")
    private String nrRg;
    
    @Column(name = "nr_cpf")
    private String nrCpf;
   
    @Column(name = "dt_nascimento")
    @Temporal(TemporalType.DATE)
    private Date dtNascimento;
    
    @Column(name = "tp_situacao")
    private int tpSituacao;
    
    @ManyToOne(optional = false, fetch = FetchType.LAZY)
    @JoinColumn(name = "id_endereco", referencedColumnName = "id_endereco", insertable = false, updatable= false)
    private Endereco endereco;
    
    @ManyToOne(optional = false, fetch = FetchType.LAZY)
    @JoinColumn(name = "id_turma", referencedColumnName = "id_turma", insertable = false, updatable= false)
    private Turma turma;
    
    @ManyToOne(optional = false, fetch = FetchType.LAZY)
    @JoinColumn(name = "id_curso", referencedColumnName = "id_curso", insertable = false, updatable= false)
    private Curso curso;
   
    @Transient
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "idAluno", fetch = FetchType.LAZY)
    private List<Presenca> listaPresenca;

    @Transient
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "idAluno", fetch = FetchType.LAZY)
    private List<Nota> listaNota;

    public Curso getCurso() {
        return curso;
    }

    public void setCurso(Curso curso) {
        this.curso = curso;
    }

    public String getDsEmail() {
        return dsEmail;
    }

    public void setDsEmail(String dsEmail) {
        this.dsEmail = dsEmail;
    }

    public String getDsTelefone() {
        return dsTelefone;
    }

    public void setDsTelefone(String dsTelefone) {
        this.dsTelefone = dsTelefone;
    }

    public Date getDtNascimento() {
        return dtNascimento;
    }

    public void setDtNascimento(Date dtNascimento) {
        this.dtNascimento = dtNascimento;
    }

    public Endereco getEndereco() {
        return endereco;
    }

    public void setEndereco(Endereco endereco) {
        this.endereco = endereco;
    }

    public Integer getIdAluno() {
        return idAluno;
    }

    public void setIdAluno(Integer idAluno) {
        this.idAluno = idAluno;
    }

    public Integer getIdCurso() {
        return idCurso;
    }

    public void setIdCurso(Integer idCurso) {
        this.idCurso = idCurso;
    }

    public Integer getIdEndereco() {
        return idEndereco;
    }

    public void setIdEndereco(Integer idEndereco) {
        this.idEndereco = idEndereco;
    }

    public Integer getIdTurma() {
        return idTurma;
    }

    public void setIdTurma(Integer idTurma) {
        this.idTurma = idTurma;
    }

    public List<Nota> getListaNota() {
        return listaNota;
    }

    public void setListaNota(List<Nota> listaNota) {
        this.listaNota = listaNota;
    }

    public List<Presenca> getListaPresenca() {
        return listaPresenca;
    }

    public void setListaPresenca(List<Presenca> listaPresenca) {
        this.listaPresenca = listaPresenca;
    }

    public String getNmAluno() {
        return nmAluno;
    }

    public void setNmAluno(String nmAluno) {
        this.nmAluno = nmAluno;
    }

    public String getNrCpf() {
        return nrCpf;
    }

    public void setNrCpf(String nrCpf) {
        this.nrCpf = nrCpf;
    }

    public String getNrRg() {
        return nrRg;
    }

    public void setNrRg(String nrRg) {
        this.nrRg = nrRg;
    }

    public int getTpSituacao() {
        return tpSituacao;
    }

    public void setTpSituacao(int tpSituacao) {
        this.tpSituacao = tpSituacao;
    }

    public Turma getTurma() {
        return turma;
    }

    public void setTurma(Turma turma) {
        this.turma = turma;
    }
    
}